using Microsoft.AspNetCore.Identity; // 引入ASP.NET Core Identity框架的核心功能
namespace UniversalAdmin.Infrastructure.Services; // 定义服务的命名空间

// BCrypt密码哈希服务，实现IPasswordHasher接口
public class BCryptPasswordHasher<TUser> : IPasswordHasher<TUser> where TUser : class
{
    // 哈希密码方法
    public string HashPassword(TUser user, string password)
    {
        // workFactor=8 对应 $2a$8$，表示哈希计算的复杂度 (开发环境优化性能)
        return BCrypt.Net.BCrypt.HashPassword(password, workFactor: 8);
    }

    // 验证哈希密码方法
    public PasswordVerificationResult VerifyHashedPassword(TUser user, string hashedPassword, string providedPassword)
    {
        // 使用BCrypt验证提供的密码是否匹配哈希密码
        bool isValid = BCrypt.Net.BCrypt.Verify(providedPassword, hashedPassword);
        // 返回验证结果：成功或失败
        return isValid
            ? PasswordVerificationResult.Success
            : PasswordVerificationResult.Failed;
    }
}